<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>01_冒泡排序</title>
  </head>
  <body>
    <script>
      /* 冒泡排序 */
      function bubbleSort(arr) {
        const length = arr.length
        // 第一位迭代到最后一位，控制数组中经过了多少轮排序，数组中每项都经过一轮，轮数和数组长度一致
        for (let i = 0; i < length; i++) {
          // 第一位迭代到倒数第二位 最后比较的是length-2项和length-1项，因为不存在length项
          // 优化：(length - 1) - i 减去外循环中已经跑过的轮数，减少比较
          for (let j = 0; j < length - 1 - i; j++) {
            // 比较并交换位置
            if (arr[j] > arr[j + 1]) {
              const temp = arr[j]
              arr[j] = arr[j + 1]
              arr[j + 1] = temp
            }
          }
        }
        return arr
      }
      var arr = [1, 4, 3, 5, 2]
      console.log(bubbleSort(arr))
    </script>
  </body>
</html>
